<?php
/**
 * Description of TSqlInstructionclass
 *
 * @author Saulo
 */
abstract class TSqlInstruction {
    protected $sql;
    protected $criteria;

    /*método ser Entity()
     * define a entidade da tabela manipulada pela instrução SQL
     * @param $entity = tabela
     */
    final public function setEntity($entity)
    {
        if(!empty($entity)){
        $this->entity = $entity;}else{
            throw new Exception("Nome da tabela não configurado.");
        }
    }
    /*
     * método getEntity()
     * retorna o nome da entidade (tabela)
     */
    final public function getEntity()
    {
        if(empty ($this->$entity)){
            throw new Exception("Não existe uma tabela Configurada");
        }else{
        return $this->$entity;
        }
    }
    /*
     * método setCriteria()
     * @param $criteria = objeto do tipo TCriteria
     */
    public function setCriteria(TExpression $criteria){
        if(is_object($criteria)){
            $this->criteria = $criteria;
        }else{
            throw new Exception("O parâmetro passado não é um Objeto");
        }
    }
    abstract function getInstruction();

}
?>
